Tính năng Hệ_thống_quản_lý_gói

Minh họa của một trình quản lý gói được dùng để tải về phần mềm mới. Các thao tác thủ công có thể bao gồm việc chấp nhận một thỏa thuận cấp phép hoặc chọn một số tùy chọn cấu hình gói cụ thể.

Một gói phần mềm là một file nén có chứa một chương trình máy tính cũng như các dữ liệu cần thiết cho việc cài đặt nó. Ứng dụng máy tính có thể là ở trong mã nguồn cần được biên soạn và biên dịch trước.[2] Các siêu dữ liệu của gói bao gồm miêu tả gói, phiên bản, các gói phụ thuộc (các gói cần được cài đặt trước).

Trình quản lý gói được giao nhiệm vụ tìm kiếm, cài đặt, bảo trì hoặc gỡ bỏ các gói phần mềm theo yêu cầu của người dùng. Chức năng điển hình của một hệ thống quản lý gói bao gồm:

  • Làm việc với các file nén để giải nén gói
  • Bảo đảm sự toàn vẹn và xác thực của các gói bằng cách kiểm tra chứng chỉ kỹ thuật số và checksums của chúng
  • Tìm kiếm, tải xuống, cài đặt hoặc cập nhật các phần mềm có sẵn từ các kho lưu trữ hoặc app store
  • Nhóm các gói theo chức năng để giảm sử dụng nhầm lẫn
  • Quản lý các gói phụ thuộc để đảm bảo một gói phần mềm được cài đặt với tất cả các gói nó đòi hỏi, như vậy tránh được "dependency hell"

Thử thách với thư viện dùng chung

Hệ thống máy tính dựa trên thư viện liên kết động thay vì liên kết tĩnh  chia sẻ thư viện thực thi các chỉ lệnh của máy qua các gói và các ứng dụng. Trong các hệ thống này, các mối quan hệ phức tạp giữa các gói khác nhau đòi hỏi phải có các phiên bản khác nhau của các thư viện kết quả trong một thử thách thường được biết đến như là "dependency hell". Trên hệ thống Microsoft Windows, điều này cũng được gọi là "DLL hell" khi làm việc với các thư viện liên kết động. Trình quản lý gói tốt thì rất quan trọng trên các hệ thống này.[3] Hệ thống framework từ OPENSTEP là một nỗ lực nhằm giải quyết vấn đề này, bằng cách cho phép nhiều phiên bản của thư viện được cài đặt cùng một lúc, và đối với các gói phần mềm để xác định phiên bản mà chúng được liên kết ngược.

Front-ends cho các gói biên dịch cục bộ

Quản trị hệ thống có thể cài đặt và bảo trì phần mềm bằng các công cụ khác thay vì dùng các trình quản lý gói. Ví dụ,một quản trị viên cục bộ có thể tải mã nguồn không đóng gói, biên dịch và cài đặt nó. Điều này có thể khiến hệ thống cục bộ mất đồng bộ với cơ sở dữ liệu của trình quản lý gói. Các quản trị viên địa phương sẽ được yêu cầu các biện pháp bổ sung, chẳng hạn như tự quản lý một số gói phụ thuộc hoặc cập nhật các thay đổi vào quản lý gói.

Có những công cụ có sẵn để đảm bảo rằng các gói được biên dịch cục bộ được đồng bộ với trình quản lý gói. Với các bản phân phối dựa trên file.deb và.rpm cũng như Slackware Linux, có CheckInstall, và với các hệ thống phân phối dựa trên recipe như Gentoo Linux và các hệ thống hybrid như  Arch Linux, có thể viết một recipe trước, rồi sau đó đảm bảo gói này phù hợp với cơ sở dữ liệu gói cục bộ.[cần dẫn nguồn]